package proyecto.dao;

import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;
import proyecto.modelo.Operador;

public class OperadorDAO {

    public Operador insertar(Operador op) {
        String query = "INSERT INTO operador(useroperador,passoperador,rango,nombreoperador,dni)" + "VALUES (?,?,?,?,?)";
        System.err.println(query);
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setString(1, op.getUseroperador());
            stmt.setString(2, op.getPassoperador());
            stmt.setString(3, op.getRango());
            stmt.setString(4, op.getNombreoperador());
            stmt.setString(5, op.getDni());
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo insertar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
        return op;
    }

    public char Validar(String user, String pass) {
        char valido = 'N';
        String passtrue;
        String rangotrue;
        String query = "SELECT passoperador,rango FROM operador WHERE useroperador = ?";
        System.err.println(query);
        PreparedStatement stmt = null;
        try {
            Connection con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setString(1, user);
            System.err.println(query);
            ResultSet rs = stmt.executeQuery();

            if (rs.next()) {
                passtrue = rs.getString("passoperador");
                rangotrue = rs.getString("rango");
                System.out.println(passtrue);
                if (passtrue.equals(pass)) {
                    valido = 'O';
                    if ("A".equals(rangotrue)) {
                        valido = 'A';
                    }
                }
            }
            rs.close();
            stmt.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return valido;
    }
     public Collection<Operador> buscarAll(String ref){
        String query = "SELECT useroperador,nombreoperador,DNI FROM operador WHERE (nombreoperador like '%"+ ref +"%') OR (DNI like '%" + ref + "%')";
        Collection<Operador> c = new ArrayList<Operador>();
        try {
            Connection con = ConexionBD.obtenerConexion();
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            while (rs.next()) {
                Operador op=new Operador();
                op.setUseroperador(rs.getString("useroperador"));
                op.setNombreoperador(rs.getString("nombreoperador"));
                op.setDni(rs.getString("DNI"));
                c.add(op);
            }
            rs.close();
            stmt.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return c;
    }

    public void modificar(String user, String nombre) {
        String query = "UPDATE operador SET nombreoperador = ? WHERE useroperador = ?";
        System.err.println(query);
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setString(1, nombre);
            stmt.setString(2, user);
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo modificar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
    }

    public void eliminar(String user) {
        String query = "DELETE FROM operador WHERE useroperador = ?";
        System.err.println(query);
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setString(1, user);
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo eliminar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
    }
}
